# 定义扩展模块的名称为 "pase"
EXTENSION = pase 

# OBJS: 这一行使用了多个变量和函数来生成编译目标文件的列表。wildcard 函数匹配指定模式的文件，
# patsubst 函数用于将一组源文件名替换为相应的目标文件名，即将 .c 文件扩展名替换为 .o。
# 这里是在多个子目录下的 .c 文件生成对应的 .o 文件列表。
OBJS = $(patsubst %.c,%.o,$(wildcard type/*.c hnsw/*.c *.c ivfflat/*.c utils/*.c))

#  PostgreSQL 的扩展模块中，MODULE_big 是一个特殊的变量，用于定义扩展模块的名称。
# 这个变量的命名约定是 PostgreSQL 扩展模块的标准，以表示一个较大的模块（"big"）
MODULE_big = $(EXTENSION)

# 这些变量用于设置连接和编译 PostgreSQL 扩展时的相关标志，比如使用 OpenMP 并指定一些特定的 CPU 指令集
PG_LDFLAGS = -fopenmp -msse4 -mpopcnt
PG_CPPFLAGS = -fopenmp -msse4 -mpopcnt -I/usr/lib64/openmpi/share/vampirtrace
PG_LIBS = -fopenmp

# DATA: 定义了要安装的 SQL 文件。
DATA = pase--0.0.1.sql

# PGFILEDESC: 设置了扩展模块的描述信息。
PGFILEDESC = "pase - ant ai similarity search"
REGRESS = $(EXTENSION)

# 条件分支，用于确定如何包含其他 Makefile 文件。
# 如果 USE_PGXS 变量已定义，将使用 PostgreSQL 扩展构建基础设施（PGXS）；
# 否则，会包含一些标准的构建设置和规则
ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
else
subdir = external/pase
top_builddir = ../..
include $(top_builddir)/src/Makefile.global
include $(top_srcdir)/contrib/contrib-global.mk
endif

# 自定义的目标，可能是用于运行某种 Perl 脚本进行检查
perl-check:
	$(prove_check)
